import { fileIo as fs } from '@kit.CoreFileKit'

const mimeTypesMap = new Map<string, string>([
  // 文档类型
  ['pdf', 'application/pdf'],
  ['doc', 'application/msword'],
  ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'],
  ['xls', 'application/vnd.ms-excel'],
  ['xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'],
  ['ppt', 'application/vnd.ms-powerpoint'],
  ['pptx', 'application/vnd.openxmlformats-officedocument.presentationml.presentation'],
  ['txt', 'text/plain'],
  ['rtf', 'application/rtf'],
  ['odt', 'application/vnd.oasis.opendocument.text'],
  ['ods', 'application/vnd.oasis.opendocument.spreadsheet'],
  ['odp', 'application/vnd.oasis.opendocument.presentation'],
  ['csv', 'text/csv'],
  ['xml', 'application/xml'],
  ['json', 'application/json'],
  ['html', 'text/html'],
  ['htm', 'text/html'],
  ['xhtml', 'application/xhtml+xml'],
  ['epub', 'application/epub+zip'],
  ['mobi', 'application/x-mobipocket-ebook'],
  ['azw', 'application/vnd.amazon.ebook'],
  ['azw3', 'application/vnd.amazon.ebook'],
  
  // 图像类型
  ['jpg', 'image/jpeg'],
  ['jpeg', 'image/jpeg'],
  ['png', 'image/png'],
  ['gif', 'image/gif'],
  ['bmp', 'image/bmp'],
  ['webp', 'image/webp'],
  ['svg', 'image/svg+xml'],
  ['ico', 'image/x-icon'],
  ['tiff', 'image/tiff'],
  ['tif', 'image/tiff'],
  ['psd', 'image/vnd.adobe.photoshop'],
  ['ai', 'application/postscript'],
  ['eps', 'application/postscript'],
  ['raw', 'image/raw'],
  ['cr2', 'image/x-canon-cr2'],
  ['nef', 'image/x-nikon-nef'],
  
  // 音频类型
  ['mp3', 'audio/mpeg'],
  ['wav', 'audio/wav'],
  ['ogg', 'audio/ogg'],
  ['m4a', 'audio/mp4'],
  ['flac', 'audio/flac'],
  ['aac', 'audio/aac'],
  ['wma', 'audio/x-ms-wma'],
  ['aiff', 'audio/x-aiff'],
  ['mid', 'audio/midi'],
  ['midi', 'audio/midi'],
  ['opus', 'audio/opus'],
  
  // 视频类型
  ['mp4', 'video/mp4'],
  ['avi', 'video/x-msvideo'],
  ['mov', 'video/quicktime'],
  ['wmv', 'video/x-ms-wmv'],
  ['flv', 'video/x-flv'],
  ['webm', 'video/webm'],
  ['mkv', 'video/x-matroska'],
  ['m4v', 'video/x-m4v'],
  ['3gp', 'video/3gpp'],
  ['3g2', 'video/3gpp2'],
  ['mpeg', 'video/mpeg'],
  ['mpg', 'video/mpeg'],
  ['m2v', 'video/mpeg'],
  ['ogv', 'video/ogg'],
  ['h264', 'video/h264'],
  ['h265', 'video/h265'],
  
  // 压缩文件类型
  ['zip', 'application/zip'],
  ['rar', 'application/vnd.rar'],
  ['7z', 'application/x-7z-compressed'],
  ['tar', 'application/x-tar'],
  ['gz', 'application/gzip'],
  ['bz2', 'application/x-bzip2'],
  ['xz', 'application/x-xz'],
  ['jar', 'application/java-archive'],
  ['war', 'application/java-archive'],
  ['ear', 'application/java-archive'],
  
  // 程序代码类型
  ['js', 'application/javascript'],
  ['ts', 'application/typescript'],
  ['jsx', 'text/jsx'],
  ['tsx', 'text/tsx'],
  ['css', 'text/css'],
  ['scss', 'text/scss'],
  ['sass', 'text/sass'],
  ['less', 'text/less'],
  ['py', 'text/x-python'],
  ['pyc', 'application/x-python-code'],
  ['java', 'text/x-java-source'],
  ['cpp', 'text/x-c++src'],
  ['c', 'text/x-c'],
  ['h', 'text/x-chdr'],
  ['hpp', 'text/x-c++hdr'],
  ['cs', 'text/x-csharp'],
  ['php', 'application/x-php'],
  ['rb', 'text/x-ruby'],
  ['go', 'text/x-go'],
  ['rs', 'text/rust'],
  ['lua', 'text/x-lua'],
  ['pl', 'text/x-perl'],
  ['sh', 'application/x-sh'],
  ['bat', 'application/x-bat'],
  ['cmd', 'text/plain'],
  
  // 字体类型
  ['woff', 'font/woff'],
  ['woff2', 'font/woff2'],
  ['ttf', 'font/ttf'],
  ['otf', 'font/otf'],
  ['eot', 'application/vnd.ms-fontobject'],
  
  // 数据类型
  ['sql', 'application/sql'],
  ['db', 'application/x-sqlite3'],
  ['sqlite', 'application/x-sqlite3'],
  ['mdb', 'application/x-msaccess'],
  ['accdb', 'application/x-msaccess'],
  
  // 其他类型
  ['exe', 'application/x-msdownload'],
  ['msi', 'application/x-msdownload'],
  ['deb', 'application/x-debian-package'],
  ['rpm', 'application/x-redhat-package-manager'],
  ['iso', 'application/x-iso9660-image'],
  ['dmg', 'application/x-apple-diskimage'],
  ['apk', 'application/vnd.android.package-archive'],
  ['ipa', 'application/octet-stream'],
  ['swf', 'application/x-shockwave-flash'],
  ['torrent', 'application/x-bittorrent'],
  ['ics', 'text/calendar'],
  ['vcard', 'text/vcard'],
  ['vcf', 'text/vcard'],
  ['h323', 'text/h323'],
  ['rtx', 'text/richtext'],
  ['sgml', 'text/sgml'],
  ['tsv', 'text/tab-separated-values'],
  ['wml', 'text/vnd.wap.wml'],
  ['wmls', 'text/vnd.wap.wmlscript'],
  ['asm', 'text/x-asm'],
  ['csh', 'application/x-csh'],
  ['mjs', 'application/javascript'],
  ['ksh', 'text/x-script.ksh'],
  ['pl', 'application/x-perl'],
  ['bin', 'application/octet-stream'],
  ['dms', 'application/octet-stream'],
  ['lrf', 'application/octet-stream'],
  ['mar', 'application/octet-stream'],
  ['so', 'application/octet-stream'],
  ['dist', 'application/octet-stream'],
  ['distz', 'application/octet-stream'],
  ['pkg', 'application/octet-stream'],
  ['bpk', 'application/octet-stream'],
  ['dump', 'application/octet-stream'],
  ['elc', 'application/octet-stream'],
  ['deploy', 'application/octet-stream'],
  ['img', 'application/octet-stream'],
  ['application', 'application/x-ms-application'],
  ['wmx', 'video/x-ms-wmx'],
  ['wmz', 'application/x-msmetafile'],
  ['xbap', 'application/x-ms-xbap'],
  ['xlam', 'application/vnd.ms-excel.addin.macroEnabled.12'],
  ['xlsb', 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'],
  ['xltm', 'application/vnd.ms-excel.template.macroEnabled.12'],
  ['xltx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template'],
  ['potm', 'application/vnd.ms-powerpoint.template.macroEnabled.12'],
  ['potx', 'application/vnd.openxmlformats-officedocument.presentationml.template'],
  ['ppam', 'application/vnd.ms-powerpoint.addin.macroEnabled.12'],
  ['ppsm', 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'],
  ['ppsx', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'],
  ['pptm', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12'],
  ['sldx', 'application/vnd.openxmlformats-officedocument.presentationml.slide'],
  ['sldm', 'application/vnd.ms-powerpoint.slide.macroEnabled.12'],
  ['thmx', 'application/vnd.ms-officetheme'],
  ['cat', 'application/vnd.ms-pki.seccat'],
  ['stl', 'model/stl'],
  ['iges', 'model/iges'],
  ['igs', 'model/iges'],
  ['step', 'model/step'],
  ['stp', 'model/step'],
  ['dwg', 'image/vnd.dwg'],
  ['dxf', 'image/vnd.dxf'],
  ['svgz', 'image/svg+xml'],
  ['djvu', 'image/vnd.djvu'],
  ['djv', 'image/vnd.djvu'],
  ['tga', 'image/x-tga'],
  ['exr', 'image/x-exr'],
  ['hdr', 'image/vnd.radiance'],
  ['pcx', 'image/x-pcx'],
  ['pnm', 'image/x-portable-anymap'],
  ['pbm', 'image/x-portable-bitmap'],
  ['pgm', 'image/x-portable-graymap'],
  ['ppm', 'image/x-portable-pixmap'],
  ['rgb', 'image/x-rgb'],
  ['xwd', 'image/x-xwindowdump'],
  ['eml', 'message/rfc822'],
  ['mime', 'message/rfc822'],
  ['wasm', 'application/wasm'],
  ['m3u', 'audio/x-mpegurl'],
  ['m3u8', 'application/x-mpegURL'],
  ['pls', 'audio/x-scpls'],
  ['ram', 'audio/x-pn-realaudio'],
  ['rm', 'application/vnd.rn-realmedia'],
  ['rv', 'video/vnd.rn-realvideo'],
  ['smi', 'application/smil'],
  ['smil', 'application/smil'],
  ['vob', 'video/x-ms-vob'],
  ['ifo', 'application/x-ifo'],
  ['bup', 'application/x-bup'],
  ['nfo', 'text/x-nfo'],
  ['diz', 'text/plain'],
  ['log', 'text/plain'],
  ['dat', 'application/octet-stream'],
  ['bak', 'application/octet-stream'],
  ['tmp', 'application/octet-stream'],
  ['temp', 'application/octet-stream'],
  ['old', 'application/octet-stream'],
  ['new', 'application/octet-stream'],
  ['~', 'application/octet-stream'],
  ['.~', 'application/octet-stream'],
  ['lock', 'application/octet-stream'],
  ['cfg', 'text/plain'],
  ['ini', 'text/plain'],
  ['inf', 'text/plain'],
  ['reg', 'text/plain'],
  ['url', 'text/plain'],
  ['lnk', 'application/x-ms-shortcut'],
  ['pif', 'application/x-ms-pif'],
  ['scr', 'application/x-msdownload'],
  ['com', 'application/octet-stream'],
  ['sys', 'application/octet-stream'],
  ['drv', 'application/octet-stream'],
  ['vxd', 'application/octet-stream'],
  ['vmm', 'application/x-ms-vmm'],
  ['vmsd', 'application/x-ms-vmsd'],
  ['vmsf', 'application/x-ms-vmsf'],
  ['vmss', 'application/x-ms-vmss'],
  ['vmtm', 'application/x-ms-vmtm'],
  ['vmcx', 'application/x-ms-vmcx'],
  ['vmrs', 'application/x-ms-vmrs'],
  ['vmgs', 'application/x-ms-vmgs'],
  ['vmdk', 'application/x-vmware-vmdk'],
  ['ova', 'application/x-virtualbox-ova'],
  ['ovf', 'application/x-virtualbox-ovf'],
  ['vdi', 'application/x-virtualbox-vdi'],
  ['vhd', 'application/x-virtualbox-vhd'],
  ['vhdx', 'application/x-virtualbox-vhdx'],
  ['qcow', 'application/x-qemu-disk'],
  ['qcow2', 'application/x-qemu-disk'],
  ['qed', 'application/x-qemu-disk'],
  ['vpc', 'application/x-virtual-pc-disk'],
  ['hdd', 'application/x-virtualbox-hdd'],
  ['hds', 'application/x-virtualbox-hds'],
  ['dsk', 'application/x-virtualbox-dsk'],
  ['nvram', 'application/x-virtualbox-nvram'],
  ['vbox', 'application/x-virtualbox-vbox'],
  ['vbox-extpack', 'application/x-virtualbox-extpack'],
  ['box', 'application/x-vagrant-box'],
  ['vagrant', 'application/x-vagrantfile'],
  ['dockerfile', 'text/plain'],
  ['dockerignore', 'text/plain'],
  ['gitignore', 'text/plain'],
  ['npmignore', 'text/plain'],
  ['jshintrc', 'application/json'],
  ['eslintrc', 'application/json'],
  ['babelrc', 'application/json'],
  ['prettierrc', 'application/json'],
  ['stylelintrc', 'application/json'],
  ['editorconfig', 'text/plain'],
  ['env', 'text/plain'],
  ['gitmodules', 'text/plain'],
  ['gitattributes', 'text/plain'],
  ['gitconfig', 'text/plain'],
  ['sshconfig', 'text/plain'],
  ['docker-compose', 'application/x-yaml'],
  ['yaml', 'application/x-yaml'],
  ['yml', 'application/x-yaml'],
  ['toml', 'application/toml'],
  ['ini', 'text/plain'],
  ['cfg', 'text/plain'],
  ['conf', 'text/plain'],
  ['properties', 'text/plain'],
  ['props', 'text/plain'],
  ['settings', 'text/plain'],
  ['prefs', 'application/x-prefetch'],
  ['pref', 'application/x-prefetch'],
  ['reg', 'text/plain'],
  ['bat', 'application/x-bat'],
  ['cmd', 'application/x-bat'],
  ['ps1', 'application/x-powershell'],
  ['psm1', 'application/x-powershell'],
  ['psd1', 'application/x-powershell'],
  ['psc1', 'application/x-powershell'],
  ['pssc', 'application/x-powershell'],
  ['clixml', 'application/xml'],
  ['psc', 'application/x-powershell'],
  ['ps1xml', 'application/xml'],
  ['msh', 'application/x-powershell'],
  ['msh1', 'application/x-powershell'],
  ['msh2', 'application/x-powershell'],
  ['mshxml', 'application/xml'],
  ['msh1xml', 'application/xml'],
  ['msh2xml', 'application/xml'],
  ['scf', 'application/x-ms-shortcut'],
  ['pif', 'application/x-ms-pif'],
  ['scr', 'application/x-msschedule'],
  ['sct', 'text/scriptlet'],
  ['wsc', 'text/scriptlet'],
  ['wsf', 'application/x-wsf'],
  ['wsh', 'text/scriptlet'],
  ['hta', 'application/hta'],
  ['cpl', 'application/x-mscontrol'],
  ['msc', 'application/x-ms-managesdp'],
  ['msi', 'application/x-msdownload'],
  ['msp', 'application/x-msdownload'],
  ['mst', 'application/x-msdownload'],
  ['sct', 'text/scriptlet'],
  ['wsc', 'text/scriptlet'],
  ['wsf', 'application/x-wsf'],
  ['wsh', 'text/scriptlet'],
  ['hta', 'application/hta'],
  ['vbe', 'text/plain'],
  ['vbs', 'text/plain'],
  ['wsf', 'application/x-wsf'],
  ['wsh', 'text/scriptlet'],
  ['vsmacros', 'application/x-macbinary'],
  ['vsix', 'application/zip'],
  ['crx', 'application/x-chrome-extension'],
  ['xpi', 'application/x-xpinstall'],
  ['jnlp', 'application/x-java-jnlp-file'],
  ['jar', 'application/java-archive'],
  ['war', 'application/java-archive'],
  ['ear', 'application/java-archive'],
  ['h323', 'text/h323'],
  ['rtf', 'application/rtf'],
  ['rtx', 'text/richtext'],
  ['sct', 'text/scriptlet'],
  ['setpay', 'application/set-payment-initiation'],
  ['setreg', 'application/set-registration-initiation'],
  ['shar', 'application/x-shar'],
  ['sit', 'application/x-stuffit'],
  ['sitx', 'application/x-stuffitx'],
  ['snd', 'audio/basic'],
  ['spc', 'application/x-pkcs7-certificates'],
  ['spl', 'application/futuresplash'],
  ['srf', 'text/plain'],
  ['sv4cpio', 'application/x-sv4cpio'],
  ['sv4crc', 'application/x-sv4crc'],
  ['svg', 'image/svg+xml'],
  ['svgz', 'image/svg+xml'],
  ['swf', 'application/x-shockwave-flash'],
  ['tar', 'application/x-tar'],
  ['tcl', 'application/x-tcl'],
  ['tex', 'application/x-tex'],
  ['texi', 'application/x-texinfo'],
  ['texinfo', 'application/x-texinfo'],
  ['t', 'application/x-troff'],
  ['tr', 'application/x-troff'],
  ['roff', 'application/x-troff'],
  ['man', 'application/x-troff-man'],
  ['me', 'application/x-troff-me'],
  ['ms', 'application/x-troff-ms'],
  ['ustar', 'application/x-ustar'],
  ['src', 'application/x-wais-source'],
  ['cer', 'application/x-x509-ca-cert'],
  ['crt', 'application/x-x509-ca-cert'],
  ['der', 'application/x-x509-ca-cert'],
  ['pem', 'application/x-x509-ca-cert'],
  ['crl', 'application/pkix-crl'],
  ['dcr', 'application/x-director'],
  ['dir', 'application/x-director'],
  ['dxr', 'application/x-director'],
  ['frl', 'application/freeloader'],
  ['hlp', 'application/winhlp'],
  ['ins', 'application/x-internet-signup'],
  ['isp', 'application/x-internet-signup'],
  ['iii', 'application/x-iphone'],
  ['webm', 'video/webm'],
  ['weba', 'audio/webm'],
  ['webp', 'image/webp'],
  ['htc', 'text/x-component'],
  ['etx', 'text/x-setext'],
  ['acx', 'application/internet-property-stream'],
  ['movie', 'video/x-sgi-movie'],
  ['ice', 'x-conference/x-cooltalk'],
  ['323', 'text/h323'],
  ['3dm', 'x-world/x-3dmf'],
  ['3dmf', 'x-world/x-3dmf'],
  ['a', 'application/octet-stream'],
  ['aab', 'application/x-authorware-bin'],
  ['aam', 'application/x-authorware-map'],
  ['aas', 'application/x-authorware-seg'],
  ['abc', 'text/vnd.abc'],
  ['acgi', 'text/html'],
  ['afl', 'video/animaflex'],
  ['ai', 'application/postscript'],
  ['aif', 'audio/aiff'],
  ['aifc', 'audio/aiff'],
  ['aiff', 'audio/aiff'],
  ['aim', 'application/x-aim'],
  ['aip', 'text/x-audiosoft-intra'],
  ['ani', 'application/x-navi-animation'],
  ['aos', 'application/x-nokia-9000-communicator-add-on-software'],
  ['aps', 'application/mime'],
  ['art', 'image/x-jg'],
  ['asf', 'video/x-ms-asf'],
  ['asm', 'text/x-asm'],
  ['asp', 'text/asp'],
  ['asx', 'video/x-ms-asf'],
  ['au', 'audio/basic'],
  ['avi', 'video/avi'],
  ['avs', 'video/avs-video'],
  ['bcpio', 'application/x-bcpio'],
  ['bin', 'application/octet-stream'],
  ['bm', 'image/bmp'],
  ['bmp', 'image/bmp'],
  ['boo', 'application/book'],
  ['book', 'application/book'],
  ['boz', 'application/x-bzip2'],
  ['bsh', 'application/x-bsh'],
  ['bz', 'application/x-bzip'],
  ['bz2', 'application/x-bzip2'],
  ['c', 'text/plain'],
  ['c++', 'text/plain'],
  ['cat', 'application/vnd.ms-pki.seccat'],
  ['cc', 'text/plain'],
  ['ccad', 'application/clariscad'],
  ['cco', 'application/x-cocoa'],
  ['cdf', 'application/cdf'],
  ['cer', 'application/pkix-cert'],
  ['cha', 'application/x-chat'],
  ['chat', 'application/x-chat'],
  ['conf', 'text/plain'],
  ['cpio', 'application/x-cpio'],
  ['cpp', 'text/plain'],
  ['cpt', 'application/mac-compactpro'],
  ['crl', 'application/pkcs-crl'],
  ['crt', 'application/pkix-cert'],
  ['csh', 'application/x-csh'],
  ['css', 'text/css'],
  ['cxx', 'text/plain'],
  ['dcr', 'application/x-director'],
  ['deepv', 'application/x-deepv'],
  ['def', 'text/plain'],
  ['der', 'application/x-x509-ca-cert'],
  ['dif', 'video/x-dv'],
  ['dir', 'application/x-director'],
  ['dl', 'video/dl'],
  ['doc', 'application/msword'],
  ['dot', 'application/msword'],
  ['dp', 'application/commonground'],
  ['drw', 'application/drafting'],
  ['dump', 'application/octet-stream'],
  ['dv', 'video/x-dv'],
  ['dvi', 'application/x-dvi'],
  ['dwf', 'drawing/x-dwf'],
  ['dwg', 'application/acad'],
  ['dxf', 'application/dxf'],
  ['dxr', 'application/x-director'],
  ['el', 'text/x-script.elisp'],
  ['elc', 'application/x-elc'],
  ['env', 'application/x-envoy'],
  ['eps', 'application/postscript'],
  ['es', 'application/x-esrehber'],
  ['etx', 'text/x-setext'],
  ['evy', 'application/envoy'],
  ['exe', 'application/octet-stream'],
  ['f', 'text/plain'],
  ['f77', 'text/x-fortran'],
  ['f90', 'text/plain'],
  ['fdf', 'application/vnd.fdf'],
  ['fif', 'image/fif'],
  ['fli', 'video/fli'],
  ['flo', 'image/florian'],
  ['flx', 'text/vnd.fmi.flexstor'],
  ['fmf', 'video/x-atomic3d-feature'],
  ['for', 'text/plain'],
  ['fpx', 'image/vnd.fpx'],
  ['frl', 'application/freeloader'],
  ['funk', 'audio/make'],
  ['g', 'text/plain'],
  ['g3', 'image/g3fax'],
  ['gif', 'image/gif'],
  ['gl', 'video/gl'],
  ['gsd', 'audio/x-gsm'],
  ['gsm', 'audio/x-gsm'],
  ['gsp', 'application/x-gsp'],
  ['gss', 'application/x-gss'],
  ['gtar', 'application/x-gtar'],
  ['gz', 'application/x-gzip'],
  ['gzip', 'application/x-gzip'],
  ['h', 'text/plain'],
  ['hdf', 'application/x-hdf'],
  ['help', 'application/x-helpfile'],
  ['hgl', 'application/vnd.hp-hpgl'],
  ['hh', 'text/plain'],
  ['hlb', 'text/x-script'],
  ['hlp', 'application/hlp'],
  ['hpg', 'application/vnd.hp-hpgl'],
  ['hpgl', 'application/vnd.hp-hpgl'],
  ['hqx', 'application/binhex'],
  ['hta', 'application/hta'],
  ['htc', 'text/x-component'],
  ['htm', 'text/html'],
  ['html', 'text/html'],
  ['htmls', 'text/html'],
  ['htt', 'text/webviewhtml'],
  ['htx', 'text/html'],
  ['ice', 'x-conference/x-cooltalk'],
  ['ico', 'image/x-icon'],
  ['idc', 'text/plain'],
  ['ief', 'image/ief'],
  ['iefs', 'image/ief'],
  ['iges', 'application/iges'],
  ['igs', 'application/iges'],
  ['ima', 'application/x-ima'],
  ['imap', 'application/x-httpd-imap'],
  ['inf', 'application/inf'],
  ['ins', 'application/x-internet-signup'],
  ['ip', 'application/x-ip2'],
  ['isu', 'video/x-isvideo'],
  ['it', 'audio/it'],
  ['iv', 'application/x-inventor'],
  ['ivr', 'i-world/i-vrml'],
  ['ivy', 'application/x-livescreen'],
  ['jam', 'audio/x-jam'],
  ['jav', 'text/plain'],
  ['java', 'text/plain'],
  ['jcm', 'application/x-java-commerce'],
  ['jfif', 'image/jpeg'],
  ['jfif-tbnl', 'image/jpeg'],
  ['jpe', 'image/jpeg'],
  ['jpeg', 'image/jpeg'],
  ['jpg', 'image/jpeg'],
  ['jps', 'image/x-jps'],
  ['js', 'application/x-javascript'],
  ['jut', 'image/jutvision'],
  ['kar', 'audio/midi'],
  ['ksh', 'application/x-ksh'],
  ['la', 'audio/nspaudio'],
  ['lam', 'audio/x-liveaudio'],
  ['latex', 'application/x-latex'],
  ['lha', 'application/lha'],
  ['lhx', 'application/octet-stream'],
  ['list', 'text/plain'],
  ['lma', 'audio/nspaudio'],
  ['log', 'text/plain'],
  ['lsp', 'application/x-lisp'],
  ['lst', 'text/plain'],
  ['lsx', 'text/x-la-asf'],
  ['ltx', 'application/x-latex'],
  ['lzh', 'application/octet-stream'],
  ['lzx', 'application/lzx'],
  ['m', 'text/plain'],
  ['m1v', 'video/mpeg'],
  ['m2a', 'audio/mpeg'],
  ['m2v', 'video/mpeg'],
  ['m3u', 'audio/x-mpequrl'],
  ['man', 'application/x-troff-man'],
  ['map', 'application/x-navimap'],
  ['mar', 'text/plain'],
  ['mbd', 'application/mbedlet'],
  ['mc$', 'application/x-magic-cap-package-1.0'],
  ['mcd', 'application/mcad'],
  ['mcf', 'image/vasa'],
  ['mcp', 'application/netmc'],
  ['me', 'application/x-troff-me'],
  ['mht', 'message/rfc822'],
  ['mhtml', 'message/rfc822'],
  ['mid', 'audio/midi'],
  ['midi', 'audio/midi'],
  ['mif', 'application/x-mif'],
  ['mime', 'message/rfc822'],
  ['mjf', 'audio/x-vnd.audioexplosion.mjuicemediafile'],
  ['mjpg', 'video/x-motion-jpeg'],
  ['mm', 'application/base64'],
  ['mme', 'application/base64'],
  ['mod', 'audio/mod'],
  ['moov', 'video/quicktime'],
  ['mov', 'video/quicktime'],
  ['movie', 'video/x-sgi-movie'],
  ['mp2', 'video/mpeg'],
  ['mp3', 'audio/mpeg3'],
  ['mp4', 'video/mp4'],
  ['mpa', 'audio/mpeg'],
  ['mpc', 'application/x-project'],
  ['mpe', 'video/mpeg'],
  ['mpeg', 'video/mpeg'],
  ['mpg', 'video/mpeg'],
  ['mpga', 'audio/mpeg'],
  ['mpp', 'application/vnd.ms-project'],
  ['mpt', 'application/x-project'],
  ['mpv', 'application/x-project'],
  ['mpx', 'application/x-project'],
  ['mrc', 'application/marc'],
  ['ms', 'application/x-troff-ms'],
  ['mv', 'video/x-sgi-movie'],
  ['my', 'audio/make'],
  ['mzz', 'application/x-vnd.audioexplosion.mzz'],
  ['nap', 'image/naplps'],
  ['naplps', 'image/naplps'],
  ['nc', 'application/x-netcdf'],
  ['ncm', 'application/vnd.nokia.configuration-message'],
  ['nif', 'image/x-niff'],
  ['niff', 'image/x-niff'],
  ['nix', 'application/x-mix-transfer'],
  ['nsc', 'application/x-conference'],
  ['nvd', 'application/x-navidoc'],
  ['o', 'application/octet-stream'],
  ['oda', 'application/oda'],
  ['omc', 'application/x-omc'],
  ['omcd', 'application/x-omcdatamaker'],
  ['omcr', 'application/x-omcregerator'],
  ['p', 'text/x-pascal'],
  ['p10', 'application/pkcs10'],
  ['p12', 'application/pkcs-12'],
  ['p7a', 'application/x-pkcs7-signature'],
  ['p7c', 'application/pkcs7-mime'],
  ['p7m', 'application/pkcs7-mime'],
  ['p7r', 'application/x-pkcs7-certreqresp'],
  ['p7s', 'application/pkcs7-signature'],
  ['part', 'application/pro_eng'],
  ['pas', 'text/pascal'],
  ['pbm', 'image/x-portable-bitmap'],
  ['pcl', 'application/vnd.hp-pcl'],
  ['pct', 'image/x-pict'],
  ['pcx', 'image/x-pcx'],
  ['pdb', 'chemical/x-pdb'],
  ['pdf', 'application/pdf'],
  ['pfunk', 'audio/make'],
  ['pgm', 'image/x-portable-graymap'],
  ['pic', 'image/pict'],
  ['pict', 'image/pict'],
  ['pkg', 'application/x-newton-compatible-pkg'],
  ['pko', 'application/vnd.ms-pki.pko'],
  ['pl', 'text/plain'],
  ['plx', 'application/x-pixclscript'],
  ['pm', 'image/x-xpixmap'],
  ['pm4', 'application/x-pagemaker'],
  ['pm5', 'application/x-pagemaker'],
  ['png', 'image/png'],
  ['pnm', 'application/x-portable-anymap'],
  ['pot', 'application/mspowerpoint'],
  ['pov', 'model/x-pov'],
  ['ppa', 'application/vnd.ms-powerpoint'],
  ['ppm', 'image/x-portable-pixmap'],
  ['pps', 'application/mspowerpoint'],
  ['ppt', 'application/mspowerpoint'],
  ['ppz', 'application/mspowerpoint'],
  ['pre', 'application/x-freelance'],
  ['prt', 'application/pro_eng'],
  ['ps', 'application/postscript'],
  ['psd', 'application/octet-stream'],
  ['pvu', 'paleovu/x-pv'],
  ['pwz', 'application/vnd.ms-powerpoint'],
  ['py', 'text/x-script.phyton'],
  ['pyc', 'applicaiton/x-bytecode.python'],
  ['qcp', 'audio/vnd.qcelp'],
  ['qd3', 'x-world/x-3dmf'],
  ['qd3d', 'x-world/x-3dmf'],
  ['qif', 'image/x-quicktime'],
  ['qt', 'video/quicktime'],
  ['qtc', 'video/x-qtc'],
  ['qti', 'image/x-quicktime'],
  ['qtif', 'image/x-quicktime'],
  ['ra', 'audio/x-pn-realaudio'],
  ['ram', 'audio/x-pn-realaudio'],
  ['ras', 'application/x-cmu-raster'],
  ['rast', 'image/cmu-raster'],
  ['rexx', 'text/x-script.rexx'],
  ['rf', 'image/vnd.rn-realflash'],
  ['rgb', 'image/x-rgb'],
  ['rm', 'application/vnd.rn-realmedia'],
  ['rmi', 'audio/mid'],
  ['rmm', 'audio/x-pn-realaudio'],
  ['rmp', 'audio/x-pn-realaudio'],
  ['rng', 'application/ringing-tones'],
  ['rnx', 'application/vnd.rn-realplayer'],
  ['roff', 'application/x-troff'],
  ['rp', 'image/vnd.rn-realpix'],
  ['rpm', 'audio/x-pn-realaudio-plugin'],
  ['rt', 'text/richtext'],
  ['rtf', 'text/richtext'],
  ['rtx', 'application/rtf'],
  ['rv', 'video/vnd.rn-realvideo'],
  ['s', 'text/x-asm'],
  ['s3m', 'audio/s3m'],
  ['saveme', 'application/octet-stream'],
  ['sbk', 'application/x-tbook'],
  ['scm', 'application/x-lotusscreencam'],
  ['sdml', 'text/plain'],
  ['sdp', 'application/sdp'],
  ['sdr', 'application/sounder'],
  ['sea', 'application/sea'],
  ['set', 'application/set'],
  ['sgm', 'text/sgml'],
  ['sgml', 'text/sgml'],
  ['sh', 'application/x-sh'],
  ['shar', 'application/x-shar'],
  ['shtml', 'text/html'],
  ['sid', 'audio/x-psid'],
  ['sit', 'application/x-sit'],
  ['skd', 'application/x-koan'],
  ['skm', 'application/x-koan'],
  ['skp', 'application/x-koan'],
  ['skt', 'application/x-koan'],
  ['sl', 'application/x-seelogo'],
  ['smi', 'application/smil'],
  ['smil', 'application/smil'],
  ['snd', 'audio/basic'],
  ['sol', 'application/solids'],
  ['spc', 'application/x-pkcs7-certificates'],
  ['spl', 'application/futuresplash'],
  ['spr', 'application/x-sprite'],
  ['sprite', 'application/x-sprite'],
  ['src', 'application/x-wais-source'],
  ['ssi', 'text/x-server-parsed-html'],
  ['ssm', 'application/streamingmedia'],
  ['sst', 'application/vnd.ms-pki.certstore'],
  ['step', 'application/step'],
  ['stl', 'application/sla'],
  ['stp', 'application/step'],
  ['sv4cpio', 'application/x-sv4cpio'],
  ['sv4crc', 'application/x-sv4crc'],
  ['svf', 'image/vnd.dwg'],
  ['svg', 'image/svg+xml'],
  ['svr', 'application/x-world'],
  ['swf', 'application/x-shockwave-flash'],
  ['t', 'application/x-troff'],
  ['talk', 'text/x-speech'],
  ['tar', 'application/x-tar'],
  ['tbk', 'application/toolbook'],
  ['tcl', 'application/x-tcl'],
  ['tcsh', 'text/x-script.tcsh'],
  ['tex', 'application/x-tex'],
  ['texi', 'application/x-texinfo'],
  ['texinfo', 'application/x-texinfo'],
  ['text', 'application/plain'],
  ['tgz', 'application/gnutar'],
  ['tif', 'image/tiff'],
  ['tiff', 'image/tiff'],
  ['tr', 'application/x-troff'],
  ['tsi', 'audio/tsp-audio'],
  ['tsp', 'application/dsptype'],
  ['tsv', 'text/tab-separated-values'],
  ['turbot', 'image/florian'],
  ['txt', 'text/plain'],
  ['uil', 'text/x-uil'],
  ['uni', 'text/uri-list'],
  ['unis', 'text/uri-list'],
  ['unv', 'application/i-deas'],
  ['uri', 'text/uri-list'],
  ['uris', 'text/uri-list'],
  ['ustar', 'application/x-ustar'],
  ['uu', 'application/octet-stream'],
  ['uue', 'text/x-uuencode'],
  ['vcd', 'application/x-cdlink'],
  ['vcf', 'text/x-vcard'],
  ['vcs', 'text/x-vcalendar'],
  ['vda', 'application/vda'],
  ['vdo', 'video/vdo'],
  ['vew', 'application/groupwise'],
  ['viv', 'video/vivo'],
  ['vivo', 'video/vivo'],
  ['vmd', 'application/vocaltec-media-desc'],
  ['vmf', 'application/vocaltec-media-file'],
  ['voc', 'audio/voc'],
  ['vos', 'video/vosaic'],
  ['vox', 'audio/voxware'],
  ['vqe', 'audio/x-twinvq-plugin'],
  ['vqf', 'audio/x-twinvq'],
  ['vql', 'audio/x-twinvq-plugin'],
  ['vrml', 'application/x-vrml'],
  ['vrt', 'x-world/x-vrt'],
  ['vsd', 'application/x-visio'],
  ['vst', 'application/x-visio'],
  ['vsw', 'application/x-visio'],
  ['w60', 'application/wordperfect6.0'],
  ['w61', 'application/wordperfect6.1'],
  ['w6w', 'application/msword'],
  ['wav', 'audio/wav'],
  ['wb1', 'application/x-qpro'],
  ['wbmp', 'image/vnd.wap.wbmp'],
  ['web', 'application/vnd.xara'],
  ['wiz', 'application/msword'],
  ['wk1', 'application/x-123'],
  ['wmf', 'windows/metafile'],
  ['wml', 'text/vnd.wap.wml'],
  ['wmlc', 'application/vnd.wap.wmlc'],
  ['wmls', 'text/vnd.wap.wmlscript'],
  ['wmlsc', 'application/vnd.wap.wmlscriptc'],
  ['word', 'application/msword'],
  ['wp', 'application/wordperfect'],
  ['wp5', 'application/wordperfect'],
  ['wp6', 'application/wordperfect'],
  ['wpd', 'application/wordperfect'],
  ['wq1', 'application/x-lotus'],
  ['wri', 'application/mswrite'],
  ['wrl', 'application/x-world'],
  ['wrz', 'model/vrml'],
  ['wsc', 'text/scriplet'],
  ['wsrc', 'application/x-wais-source'],
  ['wtk', 'application/x-wintalk'],
  ['xbm', 'image/x-xbitmap'],
  ['xdr', 'video/x-amt-demorun'],
  ['xgz', 'xgl/drawing'],
  ['xif', 'image/vnd.xiff'],
  ['xl', 'application/excel'],
  ['xla', 'application/excel'],
  ['xlb', 'application/excel'],
  ['xlc', 'application/excel'],
  ['xld', 'application/excel'],
  ['xlk', 'application/excel'],
  ['xll', 'application/excel'],
  ['xlm', 'application/excel'],
  ['xls', 'application/excel'],
  ['xlt', 'application/excel'],
  ['xlv', 'application/excel'],
  ['xlw', 'application/excel'],
  ['xm', 'audio/xm'],
  ['xml', 'application/xml'],
  ['xmz', 'xgl/movie'],
  ['xpix', 'application/x-vnd.ls-xpix'],
  ['xpm', 'image/x-xpixmap'],
  ['x-png', 'image/png'],
  ['xsr', 'video/x-amt-showrun'],
  ['xwd', 'image/x-xwd'],
  ['xyz', 'chemical/x-pdb'],
  ['z', 'application/x-compressed'],
  ['zip', 'application/zip'],
  ['zoo', 'application/octet-stream'],
  ['zsh', 'text/x-script.zsh']
]);

/**
 * 根据后缀名 获取 MIME类型
 * @param extension
 * @returns
 */
export function getMimeTypeByExtension(extension: string): string | undefined {
  // 移除点号并转换为小写
  const ext = extension.replace('.', '').toLowerCase();
  return mimeTypesMap.get(ext) || '';
}

// 根据文件名 获取 文件扩展名
function getExtensionFromFileName(fileName: string): string {
  const lastDotIndex = fileName.lastIndexOf('.');
  if (lastDotIndex === -1) return '';
  return fileName.substring(lastDotIndex + 1).toLowerCase();
}

/**
 * 从文件对象 获取 MIME类型
 * @param file fileIo.File对象
 * @code import { fileIo as fs } from '@kit.CoreFileKit'
 * @returns
 */
export function getMimeTypeByFile(file: fs.File): string | undefined {
  const extension = getExtensionFromFileName(file.name);
  return getMimeTypeByExtension(extension);
}

/**
 * 根据文件名 获取 MIME类型
 * @param fileName
 * @returns
 */
export function getMimeTypeByFileName(fileName: string): string{
  let extension: string = getExtensionFromFileName(fileName)
  if (extension) return ''
  return getMimeTypeByExtension(extension);
}